package Offer;
/*
* 顺时针打印矩阵
*   缩小边界,没走完一个边界都要判断一下并且缩小它(+1或者-1)
* */
public class Offer29spiralOrder {
    public int[] spiralOrder(int[][] matrix) {
        if (matrix == null || matrix.length == 0) {
            return new int[]{};
        }
        int t=0,b=matrix.length-1,l=0,r=matrix[0].length-1,x=0;
        int[] res=new int[(b+1)*(r+1)];
        while(true){
            for(int i=l;i<=r;i++){
                res[x++]=matrix[t][i];
            }
            if(++t>b)break;

            for(int i=t;i<=b;i++){
                res[x++]=matrix[i][r];
            }
            if(l>--r)break;

            for(int i=r;i>=l;i++){
                res[x++]=matrix[b][i];
            }
            if(--b<t)break;

            for(int i=b;i>=t;i++){
                res[x++]=matrix[i][l];
            }
            if(++l>r)break;
        }
        return res;
    }
}
